package gestorbienraizok.usuarios;

public class Cliente extends Persona {

    private long telefono;
    private String direccion;
    private long celular;
    private boolean tieneContratos;

    //Para construir clientes sin rol
    public Cliente(long cedula, String contrasenha, String nombre, String direccion, long telefono, long celular) {
        super(cedula, contrasenha, nombre, (byte) 2);
        this.telefono = telefono;
        this.direccion = direccion;
        this.celular = celular;
        this.tieneContratos = false;
    }

    //Para construir clientes especializados (Oferentes o demandantes)
    public Cliente(long cedula, String contrasenha, String nombre, String direccion, long telefono, long celular, byte nivelDeAcceso) {
        super(cedula, contrasenha, nombre, nivelDeAcceso);
        this.telefono = telefono;
        this.direccion = direccion;
        this.celular = celular;
        this.tieneContratos = false;
    }
    
    public Cliente(Cliente cliente){//Para construir un cliente y dejarlo sin rol, a partir de uno con rol
        super(cliente.getCedula(), cliente.getContrasenha(), cliente.getNombre(), (byte) 2);
        this.telefono = cliente.getTelefono();
        this.direccion = cliente.getDireccion();
        this.celular = cliente.getCelular();
        this.tieneContratos = false;
    }
    
    public void setTieneContratos(){
        this.tieneContratos = true;
    }
    public long getTelefono() {
        return this.telefono;
    }

    public String getDireccion() {
        return this.direccion;
    }

    public long getCelular() {
        return this.celular;
    }

    public void setTelefono(long telefono) {
        this.telefono = telefono;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public void setCelular(long celular) {
        this.celular = celular;
    }

    public boolean tieneContratos() {
        return this.tieneContratos;
    }

    public String getTipoDeCliente() {
        if (this instanceof ClienteOferente) {
            return "oferente";
        } else if (this instanceof ClienteDemandador) {
            return "demandante";
        } else {
            return "un cliente sin rol";
        }
    }
    public int numeroDePropiedades(){
        if(this instanceof ClienteOferente){
            ClienteOferente esteCliente = (ClienteOferente) this;
            return esteCliente.getListaDeInmueblesPropios().size();
        }
        return 0;
    }
    
    @Override
    public String tipoDePersona() {
        return "cliente sin rol";
    }
}
